package datos;

public abstract class Atributo<Tipo> {
    private Class<Tipo> tipo;
    private String nombre;

    @Override
    public boolean equals(Object other) {
        if (other instanceof Atributo) {
            Atributo aother = (Atributo)other;
            return (aother.tipo.equals(this.tipo)
                    && aother.nombre.equals(this.nombre));
        } else {
            return false;
        }
    }

    @Override
    public int hashCode() {
        return nombre.hashCode();
    }
    
    public String getNombre() {
        return this.nombre;
    }

    public Class<Tipo> getTipo() {
        return this.tipo;
    }

    public Atributo(Class<Tipo> tipo, String nombre) {
        this.nombre = nombre;
        this.tipo = tipo;
    }
    
    /* Esto lo incluyo aqui porque me parece excesivo separarlo, pero creo que formalmente habr�a que separarlo en otra clase */
    public abstract Tipo readDato(String declaracion);    
}
